package com.qf.factory;/*
 *保护你的大熊
 *2021/11/11
 *22:04
 */

import java.util.Properties;

public class MyFactory {
    //用来读取properties配置文件中的内容
    private Properties properties = new Properties();

    //无参构造
    public MyFactory() {
    }

    /**
     * 有参数构造, 通过配置文件位置和名称，将文件读取到properties对象中
     * @param config properties 配置文件的位置和名字
     */
    public MyFactory(String config) throws Exception{
        properties.load(MyFactory.class.getResourceAsStream(config));
    }

    /**
     * 根据传入的javabean的名字获取javabean的实例化对象
     * @param beanName java类的名字
     * @return
     */
    public Object getBean(String beanName) throws Exception{
        //获取类的路径
        String classpath = properties.getProperty(beanName);

        if (classpath != null) {
            //通过反射加载类对象
            Class<?> aClass = Class.forName(classpath);
            //通过反射获取类的实例化对象
            Object obj = aClass.newInstance();
            return obj;
        }
        //返回
        return null;
    }
}
